package com.example.p211springapplication;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

@RestController
public class TestController {
    //1使用@Value注解：读取springboot全局配置文件单个配置。
    @Value("${spring.config.on-not-found}")
    private String fromValue;

    //使用Environment接口：通过Environment接口动态获取配置。（将yml全部数据封装到Environment对象）
    @Resource
    private Environment env;



    //使用@ConfigurationProperties注解：在配置类上使用@ConfigurationProperties注解并指定加载配置项的前缀，就可以批量读取配置注入自定义类的成员变量中。（自定义类需要提供setter方法）
    @Autowired
    OnNotFound onNotFound;

    //使用PropertySource注解：加载properties文件配置，然后在字段上使用@Value获取配置。


    //配置PropertySourcesPlaceholderConfigurer的Bean加载自定义yml文件，然后在字段上使用@Value获取配置。

    //Java原生方式获取配置。（IO流）

    @GetMapping("/getvalue")
    public String getValue() {
        String envName = env.getProperty("spring.config.on-not-found");

        return "fromValue: " + fromValue + "\n"
                + "ConfigurationProperties: " + onNotFound.getOnNotFound() + "\n"
                + "Environment: " + envName + "\n"
                ;
    }


}
